<?php if (!defined('ABSPATH')) {
  die;
}
/**
 *
 * Field: repeater
 *
 * @since 1.0.0
 * @version 1.0.0
 *
 */
if (!class_exists('CSF_Field_repeater')) {
  class CSF_Field_repeater extends CSF_Fields
  {

    public function __construct($field, $value = '', $unique = '', $where = '', $parent = '')
    {
      parent::__construct($field, $value, $unique, $where, $parent);
    }

    public function render()
    {

      $args = wp_parse_args($this->field, array(
        'max'          => 0,
        'min'          => 0,
        'button_title' => '<i class="fas fa-plus-circle"></i>',
      ));

      if (preg_match('/' . preg_quote('[' . $this->field['id'] . ']') . '/', $this->unique)) {

        echo '<div class="csf-notice csf-notice-danger">' . esc_html__('Error: Field ID conflict.', 'csf') . '</div>';
      } else {

        echo $this->field_before();

        echo '<div class="csf-repeater-item csf-repeater-hidden" data-depend-id="' . esc_attr($this->field['id']) . '">';
        echo '<div class="csf-repeater-content">';
        foreach ($this->field['fields'] as $field) {

          $field_default = (isset($field['default'])) ? $field['default'] : '';
          $field_unique  = (!empty($this->unique)) ? $this->unique . '[' . $this->field['id'] . '][0]' : $this->field['id'] . '[0]';

          CSF::field($field, $field_default, '___' . $field_unique, 'field/repeater');
        }
        echo '</div>';
        echo '<div class="csf-repeater-helper">';
        echo '<div class="csf-repeater-helper-inner">';
        echo '<i class="csf-repeater-sort fas fa-arrows-alt"></i>';
        echo '<i class="csf-repeater-clone far fa-clone"></i>';
        echo '<i class="csf-repeater-remove csf-confirm fas fa-times" data-confirm="' . esc_html__('Are you sure to delete this item?', 'csf') . '"></i>';
        echo '</div>';
        echo '</div>';
        echo '</div>';

        echo '<div class="csf-repeater-wrapper csf-data-wrapper" data-field-id="[' . esc_attr($this->field['id']) . ']" data-max="' . esc_attr($args['max']) . '" data-min="' . esc_attr($args['min']) . '">';

        if (!empty($this->value) && is_array($this->value)) {

          $num = 0;

          foreach ($this->value as $key => $value) {

            echo '<div class="csf-repeater-item">';
            echo '<div class="csf-repeater-content">';
            foreach ($this->field['fields'] as $field) {

              $field_unique = (!empty($this->unique)) ? $this->unique . '[' . $this->field['id'] . '][' . $num . ']' : $this->field['id'] . '[' . $num . ']';
              $field_value  = (isset($field['id']) && isset($this->value[$key][$field['id']])) ? $this->value[$key][$field['id']] : '';

              CSF::field($field, $field_value, $field_unique, 'field/repeater');
            }
            echo '</div>';
            echo '<div class="csf-repeater-helper">';
            echo '<div class="csf-repeater-helper-inner">';
            echo '<i class="csf-repeater-sort fas fa-arrows-alt"></i>';
            echo '<i class="csf-repeater-clone far fa-clone"></i>';
            echo '<i class="csf-repeater-remove csf-confirm fas fa-times" data-confirm="' . esc_html__('Are you sure to delete this item?', 'csf') . '"></i>';
            echo '</div>';
            echo '</div>';
            echo '</div>';

            $num++;
          }
        }

        echo '</div>';

        echo '<div class="csf-repeater-alert csf-repeater-max">' . esc_html__('You cannot add more.', 'csf') . '</div>';
        echo '<div class="csf-repeater-alert csf-repeater-min">' . esc_html__('You cannot remove more.', 'csf') . '</div>';
        echo '<a href="#" class="button button-primary csf-repeater-add">' . $args['button_title'] . '</a>';

        echo $this->field_after();
      }
    }

    public function enqueue()
    {

      if (!wp_script_is('jquery-ui-sortable')) {
        wp_enqueue_script('jquery-ui-sortable');
      }
    }
  }
}
